#include<stdlib.h>

typedef struct NODE
{
	struct NODE *u;//up，用于遍历
	struct NODE *d;//down,用于建立目录树
	struct NODE *n;//next，用于建立目录树
	struct NODE *pr;//pre,用于遍历
	char *p;//path
} Node;

inline void Init(Node *node)
{
	node->u=NULL;
	node->d=NULL;
	node->pr=NULL;
	node->n=NULL;
}//初始化函数，不清楚需不需要。。。。

typedef struct STACK
{
	Node * s[10000];//100*100个
	int top;
} Stack; 

Node * Pop(Stack * st)
{
	Node *temp=st->s[st->top];
	st->top--;
	return temp;
}//pop

void Push(Stack *st,Node * node)
{
	st->top++;
	st->s[st->top]=node;
}//push

void Visit(Stack *st,Node * node)
{
	Node *t=node;
	if(t->u)
		printf("%s\n",t->p);
	if(!t->d) return;
	t=t->d;
	while(t->n)
		t=t->n;
	//此时，t是该目录最后一个节点
	while(t->pr)
	{	
		Push(st,t);
		t=t->pr;
	}
}//遍历的子函数，先序遍历

void Traversal(Node *start)
{
	Node *t=start;
	Stack st;
	st.top=-1;
	int k=0;
	while(1)
	{
		Visit(&st,t);
		if(st.top==-1)
			break;
		t=Pop(&st);	
	}
}//先序遍历

inline void copy(char *dest,char *src,int i,int j,int k)//i为src起始点，j为src终点，k为dest起始点
{
	int t;
	for(t=0;t<2*k;t++)
		dest[t]=' ';
	for(t=0;t<j-i;t++)
		dest[2*k+t]=src[i+t];
	dest[2*k+j-i]='\0';
}//把src的从i到j的字符复制到dest中，不含j。

inline int comp(char * t1,char * t2)
{
	int k=0;
	do
	{
		if(t1[k]>t2[k]) return -1;
		if(t1[k]<t2[k]) return 1;
		k++;
	}while(t1[k]!=0&&t2[k]!=0);		
	
	if(t1[k]==0)
	{
		if(t2[k]==0)
			return 0;
		return 1;
	}
	return -1;
}//比较字符串的大小
